package struct;

import java.util.ArrayList;

public class ELGA2011Syllabus extends Syllabus{
	private String college;
	
	private String department;
	
	/*Class Days and Class Time: */
	private String courseScheduleDays;	
	private String courseScheduleTime;
	
	/*Learning Outcomes*/
	private String learningOutcomes;
	private ArrayList<String> learningOutcomesList;
	private String learningOutcomesListType;
	
	/*Final Course Output*/
	private String finalCourseOutput; //baka ndi kailangan
	private ArrayList<LearningOutcome> learningOutcomesOutput;
	
	/*Rubric for Assessment*/
	private ArrayList<Assessment1> assessments;
	private int total;
	
	/*Requirements and Assessments*/
	private ArrayList<String> requirements;
	private String requirementsListType;
	
	/*Grading System*/
	private ArrayList<GradingSystem> gradingSystem;
	
	/*Learning Plan*/
	private ArrayList<LearningPlan> learningPlan;
	
	/*Online References*/
	private ArrayList<OnlineReference> onlineReferences;
	
	/*Class Policies*/
	private String classPolicies;
	
	public ELGA2011Syllabus() {
		super();
		this.college ="";
		this.department ="";
		this.courseScheduleDays ="";
		this.courseScheduleTime ="";
		this.learningOutcomes ="";
		this.learningOutcomesList = new ArrayList<String>();
		this.learningOutcomesListType ="";
		this.finalCourseOutput ="";
		this.learningOutcomesOutput = new ArrayList<LearningOutcome>();
		this.assessments = new ArrayList<Assessment1>();
		this.total = 0;
		this.requirements = new ArrayList<String>();
		this.requirementsListType ="";
		this.gradingSystem = new ArrayList<GradingSystem>();
		this.learningPlan = new ArrayList<LearningPlan>();
		this.onlineReferences = new ArrayList<OnlineReference>();
		this.classPolicies ="";
	}
	public String getCollege() {
		return college;
	}

	public void setCollege(String college) {
		this.college = college;
	}

	public String getDepartment() {
		return department;
	}

	public void setDepartment(String department) {
		this.department = department;
	}

	public String getCourseScheduleDays() {
		return courseScheduleDays;
	}

	public void setCourseScheduleDays(String courseScheduleDays) {
		this.courseScheduleDays = courseScheduleDays;
	}

	public String getCourseScheduleTime() {
		return courseScheduleTime;
	}

	public void setCourseScheduleTime(String courseScheduleTime) {
		this.courseScheduleTime = courseScheduleTime;
	}

	public String getLearningOutcomes() {
		return learningOutcomes;
	}

	public void setLearningOutcomes(String learningOutcomes) {
		this.learningOutcomes = learningOutcomes;
	}

	public ArrayList<String> getLearningOutcomesList() {
		return learningOutcomesList;
	}

	public void setLearningOutcomesList(ArrayList<String> learningOutcomesList) {
		this.learningOutcomesList = learningOutcomesList;
	}

	public String getLearningOutcomesListType() {
		return learningOutcomesListType;
	}

	public void setLearningOutcomesListType(String learningOutcomesListType) {
		this.learningOutcomesListType = learningOutcomesListType;
	}

	public String getFinalCourseOutput() {
		return finalCourseOutput;
	}

	public void setFinalCourseOutput(String finalCourseOutput) {
		this.finalCourseOutput = finalCourseOutput;
	}

	public ArrayList<LearningOutcome> getLearningOutcomesOutput() {
		return learningOutcomesOutput;
	}

	public void setLearningOutcomesOutput(
			ArrayList<LearningOutcome> learningOutcomesOutput) {
		this.learningOutcomesOutput = learningOutcomesOutput;
	}

	public ArrayList<Assessment1> getAssessments1() {
		return assessments;
	}

	public void setAssessments1(ArrayList<Assessment1> assessments) {
		this.assessments = assessments;
	}

	public int getTotal() {
		return total;
	}

	public void setTotal(int total) {
		this.total = total;
	}

	public ArrayList<String> getRequirements() {
		return requirements;
	}

	public void setRequirements(ArrayList<String> requirements) {
		this.requirements = requirements;
	}

	public String getRequirementsListType() {
		return requirementsListType;
	}

	public void setRequirementsListType(String requirementsListType) {
		this.requirementsListType = requirementsListType;
	}

	public ArrayList<GradingSystem> getGradingSystem() {
		return gradingSystem;
	}

	public void setGradingSystem(ArrayList<GradingSystem> gradingSystem) {
		this.gradingSystem = gradingSystem;
	}

	public ArrayList<LearningPlan> getLearningPlan() {
		return learningPlan;
	}

	public void setLearningPlan(ArrayList<LearningPlan> learningPlan) {
		this.learningPlan = learningPlan;
	}

	public ArrayList<OnlineReference> getOnlineReferences() {
		return onlineReferences;
	}

	public void setOnlineReferences(ArrayList<OnlineReference> onlineReferences) {
		this.onlineReferences = onlineReferences;
	}

	public String getClassPolicies() {
		return classPolicies;
	}

	public void setClassPolicies(String classPolicies) {
		this.classPolicies = classPolicies;
	}
	
	public LearningOutcome createLearningOutcome(int number, String output, String date){
		return new LearningOutcome(number, output, date);
	}
	
	public static int getLearningOutcomeNumber(Object learningOutcome){
		if(learningOutcome instanceof LearningOutcome)
			return ((LearningOutcome) learningOutcome).number;
		return 0;
	}
	
	public static String getLearningOutcomeOutput (Object learningOutcome) {
		if(learningOutcome instanceof LearningOutcome)
			return ((LearningOutcome)learningOutcome).output;
		return
			null;		
	}
	public static String getLearningOutcomeDate (Object learningOutcome) {
		if(learningOutcome instanceof LearningOutcome)
			return ((LearningOutcome)learningOutcome).date;
		return
			null;		
	}
	
	public Assessment1 createAssessment1(int number, String criteria1, String criteria2,String criteria3,String criteria4,int rating){
		return new Assessment1(number, criteria1,criteria2,criteria3,criteria4,rating);
	}
	
	public static int getAssessment1Number(Object assessment1){
		if(assessment1 instanceof Assessment1)
			return ((Assessment1) assessment1).number;
		return 0;
	}
	
	public static String getAssessment1Criteria1(Object assessment1){
		if(assessment1 instanceof Assessment1)
			return ((Assessment1) assessment1).criteria1;
		return null;
	}
	public static String getAssessment1Criteria2(Object assessment1){
		if(assessment1 instanceof Assessment1)
			return ((Assessment1) assessment1).criteria2;
		return null;
	}
	public static String getAssessment1Criteria3(Object assessment1){
		if(assessment1 instanceof Assessment1)
			return ((Assessment1) assessment1).criteria3;
		return null;
	}
	public static String getAssessment1Criteria4(Object assessment1){
		if(assessment1 instanceof Assessment1)
			return ((Assessment1) assessment1).criteria4;
		return null;
	}
	
	public static int getAssessment1Rating(Object assessment1){
		if(assessment1 instanceof Assessment1)
			return ((Assessment1) assessment1).rating;
		return 0;
	}
	
	public GradingSystem createGradingSystem(String name, int percentage){
		return new GradingSystem(name, percentage);
	}
	
	public static String getGradingSystemName(Object gradingSystem){
		if(gradingSystem instanceof GradingSystem)
			return ((GradingSystem) gradingSystem).name;
		return null;
	}
	
	public static int getGradingSystemPercentage(Object gradingSystem){
		if(gradingSystem instanceof GradingSystem)
			return ((GradingSystem) gradingSystem).percentage;
		return 0;
	}
	
	public LearningPlan createLearningPlan(String learningOutcome, String topic, int weekNumber, String learningActivities){
		return new LearningPlan(learningOutcome, topic,weekNumber,learningActivities);
	}
	
	public static String getLearningPlanLearningOutcome(Object learningPlan){
		if(learningPlan instanceof LearningPlan)
			return ((LearningPlan) learningPlan).learningOutcome;
		return null;
	}
	
	public static String getLearningPlanTopic(Object learningPlan){
		if(learningPlan instanceof LearningPlan)
			return ((LearningPlan) learningPlan).topic;
		return null;
	}
	public static int getLearningPlanWeekNumber(Object learningPlan){
		if(learningPlan instanceof LearningPlan)
			return ((LearningPlan) learningPlan).weekNumber;
		return 0;
	}	
	
	public static String getLearningPlanLearningActivities(Object learningPlan){
		if(learningPlan instanceof LearningPlan)
			return ((LearningPlan) learningPlan).learningActivities;
		return null;
	}
	
	public OnlineReference createOnlineReference(String name, String link){
		return new OnlineReference(name,link);
	}
	
	public static String getOnlineReferenceName(Object onlineReference){
		if(onlineReference instanceof OnlineReference)
			return ((OnlineReference) onlineReference).name;
		return null;
	}
	
	public static String getOnlineReferenceLink(Object onlineReference){
		if(onlineReference instanceof OnlineReference)
			return ((OnlineReference) onlineReference).link;
		return null;
	}
	
	
	private class LearningOutcome{
		
		private int number;
		private String output;
		private String date;
		
		private LearningOutcome(int number, String output, String date) {

			this.number = number;
			this.output = output;
			this.date = date;
		}
	}
	
	private class Assessment1{
		private int number; //Category number
		private String criteria4; //Exemplary
		private String criteria3; //Satisfactory
		private String criteria2; //Developing
		private String criteria1; //Beginning
		private int rating; //Rating
		
		private Assessment1(int number, String criteria4, String criteria3, String criteria2, String criteria1, int rating){
			this.number=number;
			this.criteria4=criteria4;
			this.criteria3=criteria3;
			this.criteria2=criteria2;
			this.criteria1=criteria1;
			this.rating=rating;
			
		}
		
	}
	
	private class GradingSystem{
		private String name;
		private int percentage;
		
		private GradingSystem(String name, int percentage){
			this.name=name;
			this.percentage=percentage;
		}		
	}
	
	private class LearningPlan{
		private String learningOutcome;
		private String topic;
		private int weekNumber;
		private String learningActivities;
		
		private LearningPlan(String learningOutcome, String topic, int weekNumber, String learningActivities){
			
			this.learningOutcome=learningOutcome;
			this.topic=topic;
			this.weekNumber=weekNumber;
			this.learningActivities=learningActivities;
		}
	}
	
	private class OnlineReference{
		private String name;
		private String link;
		
		private OnlineReference(String name, String link)
		{
			this.name=name;
			this.link=link;
		}
	}
	

}
